#ifndef _ERROR_H_
#define _ERROR_H
#include "head.h"


// 检查命令行参数数量是否符合预期
#define ARGS_CHECK(argc,expected) \
    do { \
        if((argc)!=(expected)){ \
            fprintf(stderr, "args num error!\n"); \
            exit(1); \
        } \
    } while (0)

// 检查返回值是否是错误标记，若是则打印msg和错误信息
#define ERROR_CHECK(ret,error_flag,msg) \
    do { \
        if((ret)==(error_flag)){ \
            perror(msg); \
            exit(1); \
        } \
    } while(0)

#define THREAD_ERROR_CHECK(ret,msg) \
    do { \
        if(ret!=0){ \
            fprintf(stderr,"%s:%s\n",msg,strerror(ret)); \
        } \
    } while(0)

//检查数据库执行是否正常，传入参数：数据库
#define MYSQL_ERROR_CHECK(conn, res, error_flag) \
    do { \
        if((res) == (error_flag)){\
            fprintf(stderr, "MySQL error in %s: %s,lines:%d\n", __func__, mysql_error(conn),__LINE__); \
            mysql_close(conn); \
            exit(1); \
        }\
    } while(0)


#endif
